-
Notifications
You must be signed in to change notification settings - Fork 27.8k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
refactor(turbopack): Add NonLocalValue
derives to types deriving TraceRawVcs
#73714
Merged
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This stack of pull requests is managed by Graphite. Learn more about stacking. |
kdy1
approved these changes
Dec 10, 2024
d25fa43
to
dc6e704
Compare
3498e7d
to
4074ede
Compare
Tests Passed |
Stats from current PRDefault Build (Increase detected
|
vercel/next.js canary | vercel/next.js bgw/common-types-non-local-value | Change | |
---|---|---|---|
buildDuration | 30s | 26.9s | N/A |
buildDurationCached | 22.8s | 21.5s | N/A |
nodeModulesSize | 409 MB | 409 MB | ✓ |
nextStartRea..uration (ms) | 723ms | 872ms |
Client Bundles (main, webpack)
vercel/next.js canary | vercel/next.js bgw/common-types-non-local-value | Change | |
---|---|---|---|
1187-HASH.js gzip | 50.4 kB | 50.4 kB | N/A |
8276.HASH.js gzip | 169 B | 168 B | N/A |
8377-HASH.js gzip | 5.3 kB | 5.3 kB | N/A |
bccd1874-HASH.js gzip | 53 kB | 53 kB | N/A |
framework-HASH.js gzip | 57.5 kB | 57.5 kB | N/A |
main-app-HASH.js gzip | 232 B | 235 B | N/A |
main-HASH.js gzip | 33.8 kB | 33.7 kB | N/A |
webpack-HASH.js gzip | 1.71 kB | 1.71 kB | N/A |
Overall change | 0 B | 0 B | ✓ |
Legacy Client Bundles (polyfills)
vercel/next.js canary | vercel/next.js bgw/common-types-non-local-value | Change | |
---|---|---|---|
polyfills-HASH.js gzip | 39.4 kB | 39.4 kB | ✓ |
Overall change | 39.4 kB | 39.4 kB | ✓ |
Client Pages
vercel/next.js canary | vercel/next.js bgw/common-types-non-local-value | Change | |
---|---|---|---|
_app-HASH.js gzip | 193 B | 193 B | ✓ |
_error-HASH.js gzip | 193 B | 193 B | ✓ |
amp-HASH.js gzip | 512 B | 510 B | N/A |
css-HASH.js gzip | 343 B | 342 B | N/A |
dynamic-HASH.js gzip | 1.84 kB | 1.84 kB | ✓ |
edge-ssr-HASH.js gzip | 265 B | 265 B | ✓ |
head-HASH.js gzip | 363 B | 362 B | N/A |
hooks-HASH.js gzip | 393 B | 392 B | N/A |
image-HASH.js gzip | 4.44 kB | 4.43 kB | N/A |
index-HASH.js gzip | 268 B | 268 B | ✓ |
link-HASH.js gzip | 2.35 kB | 2.34 kB | N/A |
routerDirect..HASH.js gzip | 328 B | 328 B | ✓ |
script-HASH.js gzip | 397 B | 397 B | ✓ |
withRouter-HASH.js gzip | 323 B | 326 B | N/A |
1afbb74e6ecf..834.css gzip | 106 B | 106 B | ✓ |
Overall change | 3.59 kB | 3.59 kB | ✓ |
Client Build Manifests
vercel/next.js canary | vercel/next.js bgw/common-types-non-local-value | Change | |
---|---|---|---|
_buildManifest.js gzip | 747 B | 745 B | N/A |
Overall change | 0 B | 0 B | ✓ |
Rendered Page Sizes
vercel/next.js canary | vercel/next.js bgw/common-types-non-local-value | Change | |
---|---|---|---|
index.html gzip | 524 B | 523 B | N/A |
link.html gzip | 539 B | 537 B | N/A |
withRouter.html gzip | 520 B | 520 B | ✓ |
Overall change | 520 B | 520 B | ✓ |
Edge SSR bundle Size
vercel/next.js canary | vercel/next.js bgw/common-types-non-local-value | Change | |
---|---|---|---|
edge-ssr.js gzip | 128 kB | 128 kB | N/A |
page.js gzip | 203 kB | 203 kB | N/A |
Overall change | 0 B | 0 B | ✓ |
Middleware size
vercel/next.js canary | vercel/next.js bgw/common-types-non-local-value | Change | |
---|---|---|---|
middleware-b..fest.js gzip | 669 B | 667 B | N/A |
middleware-r..fest.js gzip | 155 B | 156 B | N/A |
middleware.js gzip | 31 kB | 31 kB | N/A |
edge-runtime..pack.js gzip | 844 B | 844 B | ✓ |
Overall change | 844 B | 844 B | ✓ |
Next Runtimes
vercel/next.js canary | vercel/next.js bgw/common-types-non-local-value | Change | |
---|---|---|---|
523-experime...dev.js gzip | 322 B | 322 B | ✓ |
523.runtime.dev.js gzip | 314 B | 314 B | ✓ |
app-page-exp...dev.js gzip | 322 kB | 322 kB | ✓ |
app-page-exp..prod.js gzip | 127 kB | 127 kB | ✓ |
app-page-tur..prod.js gzip | 140 kB | 140 kB | ✓ |
app-page-tur..prod.js gzip | 135 kB | 135 kB | ✓ |
app-page.run...dev.js gzip | 312 kB | 312 kB | ✓ |
app-page.run..prod.js gzip | 122 kB | 122 kB | ✓ |
app-route-ex...dev.js gzip | 37.1 kB | 37.1 kB | ✓ |
app-route-ex..prod.js gzip | 25.1 kB | 25.1 kB | ✓ |
app-route-tu..prod.js gzip | 25.1 kB | 25.1 kB | ✓ |
app-route-tu..prod.js gzip | 24.9 kB | 24.9 kB | ✓ |
app-route.ru...dev.js gzip | 38.7 kB | 38.7 kB | ✓ |
app-route.ru..prod.js gzip | 24.9 kB | 24.9 kB | ✓ |
pages-api-tu..prod.js gzip | 9.56 kB | 9.56 kB | ✓ |
pages-api.ru...dev.js gzip | 11.4 kB | 11.4 kB | ✓ |
pages-api.ru..prod.js gzip | 9.56 kB | 9.56 kB | ✓ |
pages-turbo...prod.js gzip | 21.3 kB | 21.3 kB | ✓ |
pages.runtim...dev.js gzip | 27 kB | 27 kB | ✓ |
pages.runtim..prod.js gzip | 21.3 kB | 21.3 kB | ✓ |
server.runti..prod.js gzip | 916 kB | 916 kB | ✓ |
Overall change | 2.35 MB | 2.35 MB | ✓ |
build cache Overall increase ⚠️
vercel/next.js canary | vercel/next.js bgw/common-types-non-local-value | Change | |
---|---|---|---|
0.pack gzip | 2.03 MB | 2.04 MB | |
index.pack gzip | 73 kB | 72.2 kB | N/A |
Overall change | 2.03 MB | 2.04 MB |
Diff details
Diff for main-HASH.js
Diff too large to display
dc6e704
to
514401c
Compare
bgw
added a commit
that referenced
this pull request
Dec 11, 2024
…c`s and `OperationVc`s (#73764) This is a follow-up to #73714 **What is NonLocalValue?** https://turbopack-rust-docs.vercel.sh/rustdoc/turbo_tasks/trait.NonLocalValue.html The core change here is this bit in `turbopack/crates/turbo-tasks/src/vc/local.rs`: ```diff - unsafe impl<T: ?Sized + NonLocalValue> NonLocalValue for OperationVc<T> {} - unsafe impl<T: ?Sized + NonLocalValue> NonLocalValue for ResolvedVc<T> {} + unsafe impl<T: ?Sized> NonLocalValue for OperationVc<T> {} + unsafe impl<T: ?Sized> NonLocalValue for ResolvedVc<T> {} ``` These new implementations are intentionally incorrect, as these values `T` could contain references to local `Vc` values. We must also check that `T: NonLocalValue`. However, we're temporarily ignoring that problem, as: - We don't *currently* depend on `NonLocalValue` for safety (local tasks aren't enabled). - We intend to make all `VcValueType`s implement `NonLocalValue`, so implementing this for all values is approximating that future state. - Adding a `T: NonLocalValue` bound introduces a lot of noise that isn't directly actionable for types that include a `ResolvedVc` or `OperationVc` that is not *yet* a `NonLocalValue`. This PR also adds the `NonLocalValue` to types explicitly deriving `TraceRawVcs`, for types that couldn't before, by using the new weaker bounds on the `NonLocalValue` impls.
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
Labels
created-by: Turbopack team
PRs by the Turbopack team.
Font (next/font)
Related to Next.js Font Optimization.
locked
Turbopack
Related to Turbopack with Next.js.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Types that implement
TraceRawVcs
do so because they aren't aVcValueType
, but they are used inside of aVcValueType
.We have a similar issue for the
NonLocalValue
(formerlyResolvedValue
) marker trait. We need it to be implemented for all things included inside ofVcValueType
s, so that we can know thatVcValueType
s do not recursively contain potentially-localVc
s.I started this PR by adding
NonLocalValue
to all things that explicitly deriveTraceRawVcs
:And then I went through doing the following:
NonLocalValue
.NonLocalValue
in cases where it's not easy for the struct to implement it yet.non_local
options to#[turbo_task::value]
macros in places where it would help us deriveNonLocalValue
somewhere else.#[turbo_tasks(trace_ignore)]
s in favor of adding a properTraceRawVcs
andNonLocalValue
implementations.Included with this are a few improvements to the
turbo-tasks
andturbo-tasks-macros
crates:rust-analyzer
(but notcargo check
) would report a warning aboutnon_snake_case
inside the derive macro.AdjacencyMap
struct (see refactor(turbo-tasks): Simplify most type bounds on Vc<T> and related types #72823 for an explaination) and implementNonLocalValue
on it.NonLocalValue
(andTraceRawVcs
) on a few more primitive types.Closes PACK-3639